home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-07-29 | 11.9 KB | 408 lines | [TEXT/CWIE] |
- /*
- File: BSDOffscreenLib.cp
-
- Contains: Easy CopyBits & GWorld Routines.
-
- Version: Technology: Torture Chamber v1.0
- Package: BSDOffscreenLib v1.0.2
-
- Copyright: © 1997, BuggySoft™ Development.
- By Scott Dunbar
- */
-
- #include "BSDOffscreenLib.h"
-
- /*
- public variables
- */
-
- Pattern none;
- GrafPtr oldPort;
-
- /*
- private variables
- */
-
- GWorldPtr oldGWorld, curGWorld;
- GDHandle oldDevice;
-
- /*
- private prototypes
- */
-
- Boolean ValidGrafPtr (GrafPtr validateMe);
- Boolean ValidGWorld (GWorldPtr validateMe);
- Boolean ValidGrafPtrGWorld (GrafPtr gPort, GWorldPtr gWorld);
- Boolean ValidGWorldGWorld (GWorldPtr gWorld1, GWorldPtr gWorld2);
- Boolean ValidGrafPtrGrafPtr (GrafPtr gPort1, GrafPtr gPort2);
-
-
- /*
- private routines
- */
-
- Boolean ValidGrafPtr (GrafPtr validateMe) {
- if (validateMe != nil) return(true);
- return(false);
- }
-
- Boolean ValidGWorld (GWorldPtr validateMe) {
- if (validateMe != nil) return(true);
- return(false);
- }
-
- Boolean ValidGrafPtrGWorld (GrafPtr gPort, GWorldPtr gWorld) {
- if (ValidGrafPtr(gPort) && ValidGWorld(gWorld)) return(true);
- return(false);
- }
-
- Boolean ValidGWorldGWorld (GWorldPtr gWorld1, GWorldPtr gWorld2) {
- if (ValidGWorld(gWorld1) && ValidGWorld(gWorld2)) return(true);
- return(false);
- }
-
- Boolean ValidGrafPtrGrafPtr (GrafPtr gPort1, GrafPtr gPort2) {
- if (ValidGrafPtr(gPort1) && ValidGrafPtr(gPort2)) return(true);
- return(false);
- }
-
- /*
- Window To GWorld
- */
-
- void Window2GWorld (GrafPtr srcPort, GWorldPtr destPort, short mode) {
- CGrafPtr oldPort;
- GDHandle curDevice;
-
- if (ValidGrafPtrGWorld(srcPort, destPort)) {
- GetGWorld(&oldPort, &curDevice);
- SetGWorld(destPort, nil);
- LockPixels(destPort->portPixMap);
- CopyBits(&srcPort->portBits, (BitMap*)*GetGWorldPixMap(destPort), &srcPort->portRect, &destPort->portRect, mode, nil);
- UnlockPixels(destPort->portPixMap);
- SetGWorld(oldPort, curDevice);
- }
- }
-
- void Window2GWorldRect (GrafPtr srcPort, GWorldPtr destPort, Rect srcRect, Rect destRect, short mode) {
- CGrafPtr oldPort;
- GDHandle curDevice;
-
- if (ValidGrafPtrGWorld(srcPort, destPort)) {
- GetGWorld(&oldPort, &curDevice);
- SetGWorld(destPort, nil);
- LockPixels(destPort->portPixMap);
- CopyBits(&srcPort->portBits, (BitMap*)*GetGWorldPixMap(destPort), &srcRect, &destRect, mode, nil);
- UnlockPixels(destPort->portPixMap);
- SetGWorld(oldPort, curDevice);
- }
- }
-
- void Window2GWorldRgn (GrafPtr srcPort, GWorldPtr destPort, short mode, RgnHandle clip) {
- CGrafPtr oldPort;
- GDHandle curDevice;
-
- if (ValidGrafPtrGWorld(srcPort, destPort)) {
- GetGWorld(&oldPort, &curDevice);
- SetGWorld(destPort, nil);
- LockPixels(destPort->portPixMap);
- CopyBits(&srcPort->portBits, (BitMap*)*GetGWorldPixMap(destPort), &srcPort->portRect, &destPort->portRect, mode, clip);
- UnlockPixels(destPort->portPixMap);
- SetGWorld(oldPort, curDevice);
- }
- }
-
- void Window2GWorldRectRgn (GrafPtr srcPort, GWorldPtr destPort, Rect srcRect, Rect destRect, short mode, RgnHandle clip) {
- CGrafPtr oldPort;
- GDHandle curDevice;
-
- if (ValidGrafPtrGWorld(srcPort, destPort)) {
- GetGWorld(&oldPort, &curDevice);
- SetGWorld(destPort, nil);
- LockPixels(destPort->portPixMap);
- CopyBits(&srcPort->portBits, (BitMap*)*GetGWorldPixMap(destPort), &srcRect, &destRect, mode, clip);
- UnlockPixels(destPort->portPixMap);
- SetGWorld(oldPort, curDevice);
- }
- }
-
-
- /*
- GWorld To Window
- */
-
- void GWorld2Window (GWorldPtr srcPort, GrafPtr destPort, short mode) {
- CGrafPtr oldPort;
- GDHandle curDevice;
-
- if (ValidGrafPtrGWorld(destPort, srcPort)) {
- GetGWorld(&oldPort, &curDevice);
- SetGWorld((CGrafPtr)destPort, nil);
- CopyBits((BitMap*)*(srcPort)->portPixMap, &destPort->portBits, &srcPort->portRect, &destPort->portRect, mode, nil);
- SetGWorld(oldPort, curDevice);
- }
- }
-
- void GWorld2WindowRgn (GWorldPtr srcPort, GrafPtr destPort, short mode, RgnHandle clip) {
- CGrafPtr oldPort;
- GDHandle curDevice;
-
- if (ValidGrafPtrGWorld(destPort, srcPort)) {
- GetGWorld(&oldPort, &curDevice);
- SetGWorld((CGrafPtr)destPort, nil);
- CopyBits((BitMap*)*(srcPort)->portPixMap, &destPort->portBits, &srcPort->portRect, &destPort->portRect, mode, clip);
- SetGWorld(oldPort, curDevice);
- }
- }
-
- void GWorld2WindowRect (GWorldPtr srcPort, GrafPtr destPort, Rect srcRect, Rect destRect, short mode) {
- CGrafPtr oldPort;
- GDHandle curDevice;
-
- if (ValidGrafPtrGWorld(destPort, srcPort)) {
- GetGWorld(&oldPort, &curDevice);
- SetGWorld((CGrafPtr)destPort, nil);
- CopyBits((BitMap*)*(srcPort)->portPixMap, &destPort->portBits, &srcRect, &destRect, mode, nil);
- SetGWorld(oldPort, curDevice);
- }
- }
-
- void GWorld2WindowRectRgn (GWorldPtr srcPort, GrafPtr destPort, Rect srcRect, Rect destRect, short mode, RgnHandle clip) {
- CGrafPtr oldPort;
- GDHandle curDevice;
-
- if (ValidGrafPtrGWorld(destPort, srcPort)) {
- GetGWorld(&oldPort, &curDevice);
- SetGWorld((CGrafPtr)destPort, nil);
- CopyBits((BitMap*)*(srcPort)->portPixMap, &destPort->portBits, &srcRect, &destRect, mode, clip);
- SetGWorld(oldPort, curDevice);
- }
- }
-
-
- /*
- Window To Window
- */
-
- void Window2Window (GrafPtr srcPort, GrafPtr destPort, short mode) {
- CGrafPtr oldPort;
- GDHandle curDevice;
-
- if (ValidGrafPtrGrafPtr(destPort, srcPort)) {
- GetGWorld(&oldPort, &curDevice);
- SetGWorld((CGrafPtr)destPort, nil);
- CopyBits(&srcPort->portBits, &destPort->portBits, &srcPort->portRect, &destPort->portRect, mode, nil);
- SetGWorld(oldPort, curDevice);
- }
- }
-
- void Window2WindowRect (GrafPtr srcPort, GrafPtr destPort, Rect srcRect, Rect destRect, short mode) {
- CGrafPtr oldPort;
- GDHandle curDevice;
-
- if (ValidGrafPtrGrafPtr(destPort, srcPort)) {
- GetGWorld(&oldPort, &curDevice);
- SetGWorld((CGrafPtr)destPort, nil);
- CopyBits(&srcPort->portBits, &destPort->portBits, &srcRect, &destRect, mode, nil);
- SetGWorld(oldPort, curDevice);
- }
- }
-
- void Window2WindowRgn (GrafPtr srcPort, GrafPtr destPort, short mode, RgnHandle clip) {
- CGrafPtr oldPort;
- GDHandle curDevice;
-
- if (ValidGrafPtrGrafPtr(destPort, srcPort)) {
- GetGWorld(&oldPort, &curDevice);
- SetGWorld((CGrafPtr)destPort, nil);
- CopyBits(&srcPort->portBits, &destPort->portBits, &srcPort->portRect, &destPort->portRect, mode, clip);
- SetGWorld(oldPort, curDevice);
- }
- }
-
- void Window2WindowRectRgn (GrafPtr srcPort, GrafPtr destPort, Rect srcRect, Rect destRect, short mode, RgnHandle clip) {
- CGrafPtr oldPort;
- GDHandle curDevice;
-
- if (ValidGrafPtrGrafPtr(destPort, srcPort)) {
- GetGWorld(&oldPort, &curDevice);
- SetGWorld((CGrafPtr)destPort, nil);
- CopyBits(&srcPort->portBits, &destPort->portBits, &srcRect, &destRect, mode, clip);
- SetGWorld(oldPort, curDevice);
- }
- }
-
-
- /*
- GWorld To GWorld
- */
-
- void GWorld2GWorld (GWorldPtr srcPort, GWorldPtr destPort, short mode) {
- CGrafPtr oldPort;
- GDHandle curDevice;
-
- if (ValidGWorldGWorld(destPort, srcPort)) {
- GetGWorld(&oldPort, &curDevice);
- SetGWorld(destPort, nil);
- LockPixels(destPort->portPixMap);
- CopyBits((BitMap*)*(srcPort)->portPixMap, (BitMap*)*(destPort)->portPixMap, &srcPort->portRect, &destPort->portRect, mode, nil);
- UnlockPixels(destPort->portPixMap);
- SetGWorld(oldPort, curDevice);
- }
- }
-
- void GWorld2GWorldRect (GWorldPtr srcPort, GWorldPtr destPort, Rect srcRect, Rect destRect, short mode) {
- CGrafPtr oldPort;
- GDHandle curDevice;
-
- if (ValidGWorldGWorld(destPort, srcPort)) {
- GetGWorld(&oldPort, &curDevice);
- SetGWorld(destPort, nil);
- LockPixels(destPort->portPixMap);
- CopyBits((BitMap*)*(srcPort)->portPixMap, (BitMap*)*(destPort)->portPixMap, &srcRect, &destRect, mode, nil);
- UnlockPixels(destPort->portPixMap);
- SetGWorld(oldPort, curDevice);
- }
- }
-
- void GWorld2GWorldRgn (GWorldPtr srcPort, GWorldPtr destPort, short mode, RgnHandle clip) {
- CGrafPtr oldPort;
- GDHandle curDevice;
-
- if (ValidGWorldGWorld(destPort, srcPort)) {
- GetGWorld(&oldPort, &curDevice);
- SetGWorld(destPort, nil);
- LockPixels(destPort->portPixMap);
- CopyBits((BitMap*)*(srcPort)->portPixMap, (BitMap*)*(destPort)->portPixMap, &srcPort->portRect, &destPort->portRect, mode, clip);
- UnlockPixels(destPort->portPixMap);
- SetGWorld(oldPort, curDevice);
- }
- }
-
- void GWorld2GWorldRectRgn (GWorldPtr srcPort, GWorldPtr destPort, Rect srcRect, Rect destRect, short mode, RgnHandle clip) {
- CGrafPtr oldPort;
- GDHandle curDevice;
-
- if (ValidGWorldGWorld(destPort, srcPort)) {
- GetGWorld(&oldPort, &curDevice);
- SetGWorld(destPort, nil);
- LockPixels(destPort->portPixMap);
- CopyBits((BitMap*)*(srcPort)->portPixMap, (BitMap*)*(destPort)->portPixMap, &srcRect, &destRect, mode, clip);
- UnlockPixels(destPort->portPixMap);
- SetGWorld(oldPort, curDevice);
- }
- }
-
- void Screen2GWorld (GWorldPtr destPort, short mode) {
- CGrafPtr oldPort;
- GDHandle curDevice;
-
- if (ValidGWorld(destPort)) {
- GetGWorld(&oldPort, &curDevice);
- SetGWorld(destPort, nil);
- CopyBits(&qd.screenBits, (BitMap*)*(destPort)->portPixMap, &qd.screenBits.bounds, &destPort->portRect, mode, nil);
- SetGWorld(oldPort, curDevice);
- }
- }
-
- GWorldPtr QuickGWorld (Rect rect) {
- return(CreateGWorld(0, rect, nil, nil, 0, nil, none));
- }
-
- GWorldPtr CreateGWorldEmpty (short depth, Rect rect) {
- return(CreateGWorld(depth, rect, nil, nil, 0, nil, none));
- }
-
- GWorldPtr CreateGWorldPattern (short depth, Rect rect, Pattern pat) {
- return(CreateGWorld(depth, rect, nil, nil, 0, nil, pat));
- }
-
- GWorldPtr CreateGWorldPict (short depth, Rect rect, PicHandle pict) {
- return(CreateGWorld(depth, rect, nil, nil, 0, pict, none));
- }
-
- GWorldPtr CreateGWorld (short depth, Rect rect, CTabHandle ctab, GDHandle device, GWorldFlags flags, PicHandle pict, Pattern pat) {
- GWorldPtr oldPort, tempGWorld;
- GDHandle oldDevice;
-
- GetGWorld(&oldPort, &oldDevice);
- NewGWorld(&tempGWorld, depth, &rect, ctab, device, 0);
- SetGWorld(tempGWorld, nil);
- LockPixels(GetGWorldPixMap(tempGWorld));
- EraseRect(&tempGWorld->portRect);
- if (pict != nil) DrawPicture(pict, &tempGWorld->portRect);
- if (sizeof(pat) <= 0) FillRect(&tempGWorld->portRect, &pat);
- UnlockPixels(GetGWorldPixMap(tempGWorld));
- SetGWorld(oldPort, oldDevice);
-
- return(tempGWorld);
- }
-
- void OpenGWorld (GWorldPtr gWorld) {
- if (ValidGWorld(gWorld)) {
- curGWorld = gWorld;
- GetGWorld(&oldGWorld, &oldDevice);
- SetGWorld(curGWorld, nil);
- LockPixels(GetGWorldPixMap(curGWorld));
- }
- }
-
- void CloseGWorld (void) {
- if (ValidGWorld(curGWorld)) {
- UnlockPixels(GetGWorldPixMap(curGWorld));
- SetGWorld(oldGWorld, oldDevice);
- curGWorld = nil;
- }
- }
-
- void GWorld2GWorldMask (GWorldPtr srcPort, GWorldPtr maskPort, GWorldPtr destPort, Rect srcRect, Rect destRect) {
- CGrafPtr oldPort;
- GDHandle curDevice;
-
- if (ValidGWorldGWorld(srcPort, maskPort) && ValidGWorld(destPort)) {
- GetGWorld(&oldPort, &curDevice);
- SetGWorld(destPort, nil);
- LockPixels(destPort->portPixMap);
- CopyMask((BitMap*)*(srcPort)->portPixMap, (BitMap*)*(maskPort)->portPixMap, (BitMap*)*(destPort)->portPixMap, &srcRect, &srcRect, &destRect);
- UnlockPixels(destPort->portPixMap);
- SetGWorld(oldPort, curDevice);
- }
- }
-
- void GWorld2WindowMask (GWorldPtr srcPort, GWorldPtr maskPort, GrafPtr destPort, Rect srcRect, Rect destRect) {
- CGrafPtr oldPort;
- GDHandle curDevice;
-
- if (ValidGWorldGWorld(srcPort, maskPort) && ValidGrafPtr(destPort)) {
- GetGWorld(&oldPort, &curDevice);
- SetGWorld((CGrafPtr)destPort, nil);
- CopyMask((BitMap*)*(srcPort)->portPixMap, (BitMap*)*(maskPort)->portPixMap, &destPort->portBits, &srcRect, &srcRect, &destRect);
- SetGWorld(oldPort, curDevice);
- }
- }
-
- void Window2WindowMask (GrafPtr srcPort, GWorldPtr maskPort, GrafPtr destPort, Rect srcRect, Rect destRect) {
- CGrafPtr oldPort;
- GDHandle curDevice;
-
- if (ValidGWorld(maskPort) && ValidGrafPtrGrafPtr(srcPort, destPort)) {
- GetGWorld(&oldPort, &curDevice);
- SetGWorld((CGrafPtr)destPort, nil);
- CopyMask(&srcPort->portBits, (BitMap*)*(maskPort)->portPixMap, &destPort->portBits, &srcRect, &srcRect, &destRect);
- SetGWorld(oldPort, curDevice);
- }
- }
-
- void Window2GWorldMask (GrafPtr srcPort, GWorldPtr maskPort, GWorldPtr destPort, Rect srcRect, Rect destRect) {
- CGrafPtr oldPort;
- GDHandle curDevice;
-
- if (ValidGWorldGWorld(destPort, maskPort) && ValidGrafPtr(srcPort)) {
- GetGWorld(&oldPort, &curDevice);
- SetGWorld(destPort, nil);
- CopyMask(&srcPort->portBits, (BitMap*)*(maskPort)->portPixMap, (BitMap*)*(destPort)->portPixMap, &srcRect, &srcRect, &destRect);
- SetGWorld(oldPort, curDevice);
- }
- }
-
-